// 封装购物车相关接口
import request from "@/utils/request";
import { getCategoryTreeAPI } from "./category";


// 加入购物车
export const insertCartAPI = ({ skuId, count }) => {
  // 注意：后端API路径和参数名与前端不匹配，这里进行转换
  // 明确指定GET请求方法
  // 添加错误处理以便调试
  // 确保参数类型正确转换
  const skuid = Number(skuId);
  const pnum = Number(count);
  
  // 参数验证
  if (isNaN(skuid) || skuid <= 0) {
    return Promise.reject(new Error('无效的商品ID'));
  }
  
  if (isNaN(pnum) || pnum <= 0 || !Number.isInteger(pnum)) {
    return Promise.reject(new Error('商品数量必须是正整数'));
  }
  
  console.log('加入购物车请求参数(类型转换后):', { skuid, pnum });
  return request({
    url: "/cart/add",
    method: "GET",
    params: {
      skuid: skuid,  // 后端需要的参数名是skuid
      pnum: pnum    // 后端需要的参数名是pnum
    },
  }).catch(error => {
    console.error('加入购物车失败:', error);
    throw error;
  });
};
// 获取购物车列表
export const getNewCartListAPI = () => {
  return request({
    url: "/cart/list",
  });
};
// 删除购物车
export const delCartAPI = (ids) => {
  // 后端API是删除单个购物车项，这里假设ids数组只包含一个id
  const id = ids && ids.length > 0 ? ids[0] : null;
  if (!id) {
    return Promise.reject(new Error('删除购物车项ID不能为空'));
  }
  return request({
    url: `/cart/del/${id}`,
  });
};

// 更新购物车商品数量
export const updateCartNumAPI = (cid, num) => {
  // 参数验证
  if (!cid || cid <= 0) {
    return Promise.reject(new Error('购物车项ID不能为空且必须为正数'));
  }
  
  const count = Number(num);
  if (isNaN(count) || count <= 0 || !Number.isInteger(count)) {
    return Promise.reject(new Error('商品数量必须是正整数'));
  }
  
  console.log('更新购物车数量请求参数:', { cid, num: count });
  return request({
    url: '/cart/update',
    method: 'GET',
    params: {
      cid: cid,
      num: count
    },
  }).catch(error => {
    console.error('更新购物车数量失败:', error);
    throw error;
  });
};
